package com.free.exception;



import com.free.functions.KeyParamsFunction;

import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
public class SystemException extends Exception {


    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    private static final long serialVersionUID = -1425333747333617475L;

    private String message;

    private Throwable excep;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    private static KeyParamsFunction<String,String[],String> func;

    public SystemException(String message){
        super(message);
        this.message = message;
    }

    public SystemException(String message,Throwable excep){
        super(message, excep);
        this.message = message;
        this.excep = excep;
    }

    public SystemException(String messageKey, String... params)
    {
        super();
        if(func != null){
            this.message = func.apply(messageKey,params);
        }
    }

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Throwable getExcep() {
        return excep;
    }

    public void setExcep(Throwable excep) {
        this.excep = excep;
    }

    public static void setFunc(KeyParamsFunction<String,String[],String> func){
        func = func;
    }

    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
